From c2dfee900fc70e66c65d1412e624f14cbe7c19f7 Mon Sep 17 00:00:00 2001 From: parkrrrr Date: Thu, 5 Aug 2004 15:37:10 +0000 Subject: [PATCH] Code to compute magnetic declination. Not currently in GPSBabel; parked here for safekeeping. --- declination/decline.c | 654 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 654 insertions(+) create mode 100644 declination/decline.c diff --git a/declination/decline.c b/declination/decline.c new file mode 100644 index 000000000..25fe6f0e7 --- /dev/null +++ b/declination/decline.c @@ -0,0 +1,654 @@ + +/* + Declination function + + Copyright (C) 2002 Robert Lipe, robertlipe@usa.net + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA + + */ +#include +#include +#include "defs.h" + +static double gh[]; + +#define STANDALONE + + +/* +These comments are from the original Fortran code from IGRF + + subroutine igrf9syn (isv,date,itype,alt,colat,elong,x,y,z,f) + c + c This is a synthesis routine for the 9th generation IGRF as agreed + c in July 2003 by IAGA Working Group V-8. It is valid 1900.0 to 2005.0 + c inclusive. Values for dates from 1945.0 to 2000.0 inclusive are + c definitve, otherwise they are non-definitive. + c INPUT + c isv = 0 if main-field values are required + c isv = 1 if secular variation values are required + c date = year A.D. Must be greater than or equal to 1900.0 and + c less than or equal to 2010.0. Warning message is given + c for dates greater than 2005.0. Must be double precision. + c itype = 1 if geodetic (spheroid) + c itype = 2 if geocentric (sphere) + c alt = height in km above sea level if itype = 1 + c = distance from centre of Earth in km if itype = 2 (>3485 km) + c colat = colatitude (0-180) + c elong = east-longitude (0-360) + c alt, colat and elong must be double precision. + c OUTPUT + c x = north component (nT) if isv = 0, nT/year if isv = 1 + c y = east component (nT) if isv = 0, nT/year if isv = 1 + c z = vertical component (nT) if isv = 0, nT/year if isv = 1 + c f = total intensity (nT) if isv = 0, rubbish if isv = 1 + c + c To get the other geomagnetic elements (D, I, H and secular + c variations dD, dH, dI and dF) use routines ptoc and ptocsv. + c + c Adapted from 8th generation version to include new maximum degree for + c main-field models for 2000.0 and onwards and use WGS84 spheroid instead + c of International Astronomical Union 1966 spheroid as recommended by IAGA + c in July 2003. Reference radius remains as 6371.2 km - it is NOT the mean + c radius (= 6371.0 km) but 6371.2 km is what is used in determining the + c coefficients. Adaptation by Susan Macmillan, August 2003. + */ + + double declination( double date, double alt, double lat, double lon ) { + + double cl[14]; + double sl[14]; + double p[106]; + double q[106]; + + double x = 0; + double y = 0; + double z = 0; + double f = 0; + + double colat = 90 - lat; + double elong = lon; + + double t; + double ll; + double one; + double two; + double three; + double rho; + double tc; + + double r; + double ct; + double st; + double cd; + double sd; + + double a2; + double b2; + double ratio; + double rr; + + double fn; + double gn; + double fm; + double gmm; + + int i; + int j; + int k; + int kmx; + int l; + int lm; + int m; + int n; + int nc; + int nmx; + + /* + c set initial values + */ + x = 0.0; + y = 0.0; + z = 0.0; + if ( date >= 1900 && date <= 2010 ) { + /* + if (date.gt.2005.0) write (6,960) date + 960 format (/' This version of the IGRF is intended for use up', + 1 ' to 2005.0.'/' values for',f9.3,' will be computed', + 2 ' but may be of reduced accuracy'/) + */ + if (date < 2000.0) { + t = 0.2*(date - 1900.0); + ll = t; + one = ll; + t = t - one; + if (date <= 1995.0) { + nmx = 10; + nc = nmx*(nmx+2); + ll = nc*ll; + kmx = (nmx+1)*(nmx+2)/2; + } + else { + nmx = 13; + nc = nmx*(nmx+2); + ll = 0.2*(date - 1995.0); + ll = 120*19 + nc*ll; + kmx = (nmx+1)*(nmx+2)/2; + } + tc = 1.0 - t; + } + else { + t = date - 2000.0; + tc = 1.0; + ll = 2475; + nmx = 13; + nc = nmx*(nmx+2); + kmx = (nmx+1)*(nmx+2)/2; + } + + r = alt; + one = colat*M_PI/180; + ct = cos(one); + st = sin(one); + one = elong*M_PI/180; + cl[1] = cos(one); + sl[1] = sin(one); + cd = 1.0; + sd = 0.0; + l = 1; + m = 1; + n = 0; + /* + c conversion from geodetic to geocentric coordinates + c (using the WGS84 spheroid) + */ + a2 = 40680631.6; + b2 = 40408296.0; + one = a2*st*st; + two = b2*ct*ct; + three = one + two; + rho = sqrt(three); + r = sqrt(alt*(alt + 2.0*rho) + (a2*one + b2*two)/three); + cd = (alt + rho)/r; + sd = (a2 - b2)/rho*ct*st/r; + one = ct; + ct = ct*cd - st*sd; + st = st*cd + one*sd; + + ratio = 6371.2/r; + rr = ratio*ratio; + /* + c computation of Schmidt quasi-normal coefficients p and x(=q) + */ + p[1] = 1.0; + p[3] = st; + q[1] = 0.0; + q[3] = ct; + for ( k = 2; k <= kmx; k++ ) { + if (n < m) { + m = 0; + n = n + 1; + rr = rr*ratio; + fn = n; + gn = n - 1; + } + fm = m; + if (m == n) { + if (k != 3) { + one = sqrt(1.0 - 0.5/fm); + j = k - n - 1; + p[k] = one*st*p[j]; + q[k] = one*(st*q[j] + ct*p[j]); + cl[m] = cl[m-1]*cl[1] - sl[m-1]*sl[1]; + sl[m] = sl[m-1]*cl[1] + cl[m-1]*sl[1]; + } + } + else { + gmm = m*m; + one = sqrt(fn*fn - gmm); + two = sqrt(gn*gn - gmm)/one; + three = (fn + gn)/one; + i = k - n; + j = i - n + 1; + p[k] = three*ct*p[i] - two*p[j]; + q[k] = three*(ct*q[i] - st*p[i]) - two*q[j]; + } + /* + c synthesis of x, y and z in geocentric coordinates + */ + lm = ll + l; + one = (tc*gh[lm] + t*gh[lm+nc])*rr; + if (m != 0) { + two = (tc*gh[lm+1] + t*gh[lm+nc+1])*rr; + three = one*cl[m] + two*sl[m]; + x = x + three*q[k]; + z = z - (fn + 1.0)*three*p[k]; + if (st != 0.0) { + y = y + (one*sl[m] - two*cl[m])*fm*p[k]/st; + } + else { + y = y + (one*sl[m] - two*cl[m])*q[k]*ct; + } + l = l + 2; + } + else { + x = x + one*q[k]; + z = z - (fn + 1.0)*one*p[k]; + l = l + 1; + } + m = m + 1; + } + /* + c conversion to coordinate system specified by itype + */ + one = x; + x = x*cd + z*sd; + + return 180/M_PI*atan2(y,x); + } + /* + c error return if date out of bounds + */ + /* + fatal ( "Can't compute declination for dates outside of 1900-2010\n" ); + */ + return 999; +} + + +#ifdef STANDALONE + int main(int c, char **v) { + double lat = atof(v[1]); + double lon = atof(v[2]); + double date = atof(v[3]); + double dec = declination( date, 0, lat, lon ); + printf( "declination is %f at %f,%f on %f\n\n", dec, lat, lon, date ); + return 0; + } +#endif + + +static double gh[] = { + 0, + /* 1900 */ + -31543.,-2298., 5922., -677., 2905.,-1061., 924., 1121., + 1022.,-1469., -330., 1256., 3., 572., 523., 876., + 628., 195., 660., -69., -361., -210., 134., -75., + -184., 328., -210., 264., 53., 5., -33., -86., + -124., -16., 3., 63., 61., -9., -11., 83., + -217., 2., -58., -35., 59., 36., -90., -69., + 70., -55., -45., 0., -13., 34., -10., -41., + -1., -21., 28., 18., -12., 6., -22., 11., + 8., 8., -4., -14., -9., 7., 1., -13., + 2., 5., -9., 16., 5., -5., 8., -18., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 8., 2., 10., -1., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 2., 4., 2., 0., 0., -6., + /* 1905 */ + -31464.,-2298., 5909., -728., 2928.,-1086., 1041., 1065., + 1037.,-1494., -357., 1239., 34., 635., 480., 880., + 643., 203., 653., -77., -380., -201., 146., -65., + -192., 328., -193., 259., 56., -1., -32., -93., + -125., -26., 11., 62., 60., -7., -11., 86., + -221., 4., -57., -32., 57., 32., -92., -67., + 70., -54., -46., 0., -14., 33., -11., -41., + 0., -20., 28., 18., -12., 6., -22., 11., + 8., 8., -4., -15., -9., 7., 1., -13., + 2., 5., -8., 16., 5., -5., 8., -18., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 8., 2., 10., 0., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 2., 4., 2., 0., 0., -6., + /* 1910 */ + -31354.,-2297., 5898., -769., 2948.,-1128., 1176., 1000., + 1058.,-1524., -389., 1223., 62., 705., 425., 884., + 660., 211., 644., -90., -400., -189., 160., -55., + -201., 327., -172., 253., 57., -9., -33., -102., + -126., -38., 21., 62., 58., -5., -11., 89., + -224., 5., -54., -29., 54., 28., -95., -65., + 71., -54., -47., 1., -14., 32., -12., -40., + 1., -19., 28., 18., -13., 6., -22., 11., + 8., 8., -4., -15., -9., 6., 1., -13., + 2., 5., -8., 16., 5., -5., 8., -18., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 8., 2., 10., 0., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 2., 4., 2., 0., 0., -6., + /* 1915 */ + -31212.,-2306., 5875., -802., 2956.,-1191., 1309., 917., + 1084.,-1559., -421., 1212., 84., 778., 360., 887., + 678., 218., 631., -109., -416., -173., 178., -51., + -211., 327., -148., 245., 58., -16., -34., -111., + -126., -51., 32., 61., 57., -2., -10., 93., + -228., 8., -51., -26., 49., 23., -98., -62., + 72., -54., -48., 2., -14., 31., -12., -38., + 2., -18., 28., 19., -15., 6., -22., 11., + 8., 8., -4., -15., -9., 6., 2., -13., + 3., 5., -8., 16., 6., -5., 8., -18., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 8., 2., 10., 0., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 1., 4., 2., 0., 0., -6., + /* 1920 */ + -31060.,-2317., 5845., -839., 2959.,-1259., 1407., 823., + 1111.,-1600., -445., 1205., 103., 839., 293., 889., + 695., 220., 616., -134., -424., -153., 199., -57., + -221., 326., -122., 236., 58., -23., -38., -119., + -125., -62., 43., 61., 55., 0., -10., 96., + -233., 11., -46., -22., 44., 18., -101., -57., + 73., -54., -49., 2., -14., 29., -13., -37., + 4., -16., 28., 19., -16., 6., -22., 11., + 7., 8., -3., -15., -9., 6., 2., -14., + 4., 5., -7., 17., 6., -5., 8., -19., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 9., 2., 10., 0., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 1., 4., 3., 0., 0., -6., + /* 1925 */ + -30926.,-2318., 5817., -893., 2969.,-1334., 1471., 728., + 1140.,-1645., -462., 1202., 119., 881., 229., 891., + 711., 216., 601., -163., -426., -130., 217., -70., + -230., 326., -96., 226., 58., -28., -44., -125., + -122., -69., 51., 61., 54., 3., -9., 99., + -238., 14., -40., -18., 39., 13., -103., -52., + 73., -54., -50., 3., -14., 27., -14., -35., + 5., -14., 29., 19., -17., 6., -21., 11., + 7., 8., -3., -15., -9., 6., 2., -14., + 4., 5., -7., 17., 7., -5., 8., -19., + 8., 10., -20., 1., 14., -11., 5., 12., + -3., 1., -2., -2., 9., 2., 10., 0., + -2., -1., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 1., 4., 3., 0., 0., -6., + /* 1930 */ + -30805.,-2316., 5808., -951., 2980.,-1424., 1517., 644., + 1172.,-1692., -480., 1205., 133., 907., 166., 896., + 727., 205., 584., -195., -422., -109., 234., -90., + -237., 327., -72., 218., 60., -32., -53., -131., + -118., -74., 58., 60., 53., 4., -9., 102., + -242., 19., -32., -16., 32., 8., -104., -46., + 74., -54., -51., 4., -15., 25., -14., -34., + 6., -12., 29., 18., -18., 6., -20., 11., + 7., 8., -3., -15., -9., 5., 2., -14., + 5., 5., -6., 18., 8., -5., 8., -19., + 8., 10., -20., 1., 14., -12., 5., 12., + -3., 1., -2., -2., 9., 3., 10., 0., + -2., -2., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -2., 1., 4., 3., 0., 0., -6., + /* 1935 */ + -30715.,-2306., 5812.,-1018., 2984.,-1520., 1550., 586., + 1206.,-1740., -494., 1215., 146., 918., 101., 903., + 744., 188., 565., -226., -415., -90., 249., -114., + -241., 329., -51., 211., 64., -33., -64., -136., + -115., -76., 64., 59., 53., 4., -8., 104., + -246., 25., -25., -15., 25., 4., -106., -40., + 74., -53., -52., 4., -17., 23., -14., -33., + 7., -11., 29., 18., -19., 6., -19., 11., + 7., 8., -3., -15., -9., 5., 1., -15., + 6., 5., -6., 18., 8., -5., 7., -19., + 8., 10., -20., 1., 15., -12., 5., 11., + -3., 1., -3., -2., 9., 3., 11., 0., + -2., -2., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -1., 2., 4., 3., 0., 0., -6., + /* 1940 */ + -30654.,-2292., 5821.,-1106., 2981.,-1614., 1566., 528., + 1240.,-1790., -499., 1232., 163., 916., 43., 914., + 762., 169., 550., -252., -405., -72., 265., -141., + -241., 334., -33., 208., 71., -33., -75., -141., + -113., -76., 69., 57., 54., 4., -7., 105., + -249., 33., -18., -15., 18., 0., -107., -33., + 74., -53., -52., 4., -18., 20., -14., -31., + 7., -9., 29., 17., -20., 5., -19., 11., + 7., 8., -3., -14., -10., 5., 1., -15., + 6., 5., -5., 19., 9., -5., 7., -19., + 8., 10., -21., 1., 15., -12., 5., 11., + -3., 1., -3., -2., 9., 3., 11., 1., + -2., -2., 2., -3., -4., 2., 2., 1., + -5., 2., -2., 6., 6., -4., 4., 0., + 0., -1., 2., 4., 3., 0., 0., -6., + /* 1945 */ + -30594.,-2285., 5810.,-1244., 2990.,-1702., 1578., 477., + 1282.,-1834., -499., 1255., 186., 913., -11., 944., + 776., 144., 544., -276., -421., -55., 304., -178., + -253., 346., -12., 194., 95., -20., -67., -142., + -119., -82., 82., 59., 57., 6., 6., 100., + -246., 16., -25., -9., 21., -16., -104., -39., + 70., -40., -45., 0., -18., 0., 2., -29., + 6., -10., 28., 15., -17., 29., -22., 13., + 7., 12., -8., -21., -5., -12., 9., -7., + 7., 2., -10., 18., 7., 3., 2., -11., + 5., -21., -27., 1., 17., -11., 29., 3., + -9., 16., 4., -3., 9., -4., 6., -3., + 1., -4., 8., -3., 11., 5., 1., 1., + 2., -20., -5., -1., -1., -6., 8., 6., + -1., -4., -3., -2., 5., 0., -2., -2., + /* 1950 */ + -30554.,-2250., 5815.,-1341., 2998.,-1810., 1576., 381., + 1297.,-1889., -476., 1274., 206., 896., -46., 954., + 792., 136., 528., -278., -408., -37., 303., -210., + -240., 349., 3., 211., 103., -20., -87., -147., + -122., -76., 80., 54., 57., -1., 4., 99., + -247., 33., -16., -12., 12., -12., -105., -30., + 65., -55., -35., 2., -17., 1., 0., -40., + 10., -7., 36., 5., -18., 19., -16., 22., + 15., 5., -4., -22., -1., 0., 11., -21., + 15., -8., -13., 17., 5., -4., -1., -17., + 3., -7., -24., -1., 19., -25., 12., 10., + 2., 5., 2., -5., 8., -2., 8., 3., + -11., 8., -7., -8., 4., 13., -1., -2., + 13., -10., -4., 2., 4., -3., 12., 6., + 3., -3., 2., 6., 10., 11., 3., 8., + /* 1955 */ + -30500.,-2215., 5820.,-1440., 3003.,-1898., 1581., 291., + 1302.,-1944., -462., 1288., 216., 882., -83., 958., + 796., 133., 510., -274., -397., -23., 290., -230., + -229., 360., 15., 230., 110., -23., -98., -152., + -121., -69., 78., 47., 57., -9., 3., 96., + -247., 48., -8., -16., 7., -12., -107., -24., + 65., -56., -50., 2., -24., 10., -4., -32., + 8., -11., 28., 9., -20., 18., -18., 11., + 9., 10., -6., -15., -14., 5., 6., -23., + 10., 3., -7., 23., 6., -4., 9., -13., + 4., 9., -11., -4., 12., -5., 7., 2., + 6., 4., -2., 1., 10., 2., 7., 2., + -6., 5., 5., -3., -5., -4., -1., 0., + 2., -8., -3., -2., 7., -4., 4., 1., + -2., -3., 6., 7., -2., -1., 0., -3., + /* 1960 */ + -30421.,-2169., 5791.,-1555., 3002.,-1967., 1590., 206., + 1302.,-1992., -414., 1289., 224., 878., -130., 957., + 800., 135., 504., -278., -394., 3., 269., -255., + -222., 362., 16., 242., 125., -26., -117., -156., + -114., -63., 81., 46., 58., -10., 1., 99., + -237., 60., -1., -20., -2., -11., -113., -17., + 67., -56., -55., 5., -28., 15., -6., -32., + 7., -7., 23., 17., -18., 8., -17., 15., + 6., 11., -4., -14., -11., 7., 2., -18., + 10., 4., -5., 23., 10., 1., 8., -20., + 4., 6., -18., 0., 12., -9., 2., 1., + 0., 4., -3., -1., 9., -2., 8., 3., + 0., -1., 5., 1., -3., 4., 4., 1., + 0., 0., -1., 2., 4., -5., 6., 1., + 1., -1., -1., 6., 2., 0., 0., -7., + /* 1965 */ + -30334.,-2119., 5776.,-1662., 2997.,-2016., 1594., 114., + 1297.,-2038., -404., 1292., 240., 856., -165., 957., + 804., 148., 479., -269., -390., 13., 252., -269., + -219., 358., 19., 254., 128., -31., -126., -157., + -97., -62., 81., 45., 61., -11., 8., 100., + -228., 68., 4., -32., 1., -8., -111., -7., + 75., -57., -61., 4., -27., 13., -2., -26., + 6., -6., 26., 13., -23., 1., -12., 13., + 5., 7., -4., -12., -14., 9., 0., -16., + 8., 4., -1., 24., 11., -3., 4., -17., + 8., 10., -22., 2., 15., -13., 7., 10., + -4., -1., -5., -1., 10., 5., 10., 1., + -4., -2., 1., -2., -3., 2., 2., 1., + -5., 2., -2., 6., 4., -4., 4., 0., + 0., -2., 2., 3., 2., 0., 0., -6., + /* 1970 */ + -30220.,-2068., 5737.,-1781., 3000.,-2047., 1611., 25., + 1287.,-2091., -366., 1278., 251., 838., -196., 952., + 800., 167., 461., -266., -395., 26., 234., -279., + -216., 359., 26., 262., 139., -42., -139., -160., + -91., -56., 83., 43., 64., -12., 15., 100., + -212., 72., 2., -37., 3., -6., -112., 1., + 72., -57., -70., 1., -27., 14., -4., -22., + 8., -2., 23., 13., -23., -2., -11., 14., + 6., 7., -2., -15., -13., 6., -3., -17., + 5., 6., 0., 21., 11., -6., 3., -16., + 8., 10., -21., 2., 16., -12., 6., 10., + -4., -1., -5., 0., 10., 3., 11., 1., + -2., -1., 1., -3., -3., 1., 2., 1., + -5., 3., -1., 4., 6., -4., 4., 0., + 1., -1., 0., 3., 3., 1., -1., -4., + /* 1975 */ + -30100.,-2013., 5675.,-1902., 3010.,-2067., 1632., -68., + 1276.,-2144., -333., 1260., 262., 830., -223., 946., + 791., 191., 438., -265., -405., 39., 216., -288., + -218., 356., 31., 264., 148., -59., -152., -159., + -83., -49., 88., 45., 66., -13., 28., 99., + -198., 75., 1., -41., 6., -4., -111., 11., + 71., -56., -77., 1., -26., 16., -5., -14., + 10., 0., 22., 12., -23., -5., -12., 14., + 6., 6., -1., -16., -12., 4., -8., -19., + 4., 6., 0., 18., 10., -10., 1., -17., + 7., 10., -21., 2., 16., -12., 7., 10., + -4., -1., -5., -1., 10., 4., 11., 1., + -3., -2., 1., -3., -3., 1., 2., 1., + -5., 3., -2., 4., 5., -4., 4., -1., + 1., -1., 0., 3., 3., 1., -1., -5., + /* 1980 */ + -29992.,-1956., 5604.,-1997., 3027.,-2129., 1663., -200., + 1281.,-2180., -336., 1251., 271., 833., -252., 938., + 782., 212., 398., -257., -419., 53., 199., -297., + -218., 357., 46., 261., 150., -74., -151., -162., + -78., -48., 92., 48., 66., -15., 42., 93., + -192., 71., 4., -43., 14., -2., -108., 17., + 72., -59., -82., 2., -27., 21., -5., -12., + 16., 1., 18., 11., -23., -2., -10., 18., + 6., 7., 0., -18., -11., 4., -7., -22., + 4., 9., 3., 16., 6., -13., -1., -15., + 5., 10., -21., 1., 16., -12., 9., 9., + -5., -3., -6., -1., 9., 7., 10., 2., + -6., -5., 2., -4., -4., 1., 2., 0., + -5., 3., -2., 6., 5., -4., 3., 0., + 1., -1., 2., 4., 3., 0., 0., -6., + /* 1985 */ + -29873.,-1905., 5500.,-2072., 3044.,-2197., 1687., -306., + 1296.,-2208., -310., 1247., 284., 829., -297., 936., + 780., 232., 361., -249., -424., 69., 170., -297., + -214., 355., 47., 253., 150., -93., -154., -164., + -75., -46., 95., 53., 65., -16., 51., 88., + -185., 69., 4., -48., 16., -1., -102., 21., + 74., -62., -83., 3., -27., 24., -2., -6., + 20., 4., 17., 10., -23., 0., -7., 21., + 6., 8., 0., -19., -11., 5., -9., -23., + 4., 11., 4., 14., 4., -15., -4., -11., + 5., 10., -21., 1., 15., -12., 9., 9., + -6., -3., -6., -1., 9., 7., 9., 1., + -7., -5., 2., -4., -4., 1., 3., 0., + -5., 3., -2., 6., 5., -4., 3., 0., + 1., -1., 2., 4., 3., 0., 0., -6., + /* 1990 */ + -29775.,-1848., 5406.,-2131., 3059.,-2279., 1686., -373., + 1314.,-2239., -284., 1248., 293., 802., -352., 939., + 780., 247., 325., -240., -423., 84., 141., -299., + -214., 353., 46., 245., 154., -109., -153., -165., + -69., -36., 97., 61., 65., -16., 59., 82., + -178., 69., 3., -52., 18., 1., -96., 24., + 77., -64., -80., 2., -26., 26., 0., -1., + 21., 5., 17., 9., -23., 0., -4., 23., + 5., 10., -1., -19., -10., 6., -12., -22., + 3., 12., 4., 12., 2., -16., -6., -10., + 4., 9., -20., 1., 15., -12., 11., 9., + -7., -4., -7., -2., 9., 7., 8., 1., + -7., -6., 2., -3., -4., 2., 2., 1., + -5., 3., -2., 6., 4., -4., 3., 0., + 1., -2., 3., 3., 3., -1., 0., -6., + /* 1995 */ + -29692.,-1784., 5306.,-2200., 3070.,-2366., 1681., -412., + 1335.,-2266., -262., 1248., 302., 758., -427., 940., + 780., 262., 290., -236., -418., 97., 122., -306., + -214., 352., 46., 235., 165., -118., -142., -166., + -55., -17., 107., 68., 67., -17., 68., 72., + -170., 67., 0., -58., 18., 1., -93., 36., + 77., -72., -69., 0., -25., 28., 4., 5., + 24., 4., 17., 8., -24., -2., -6., 25., + 6., 11., -6., -21., -9., 8., -14., -23., + 9., 14., 6., 11., -4., -16., -7., -4., + 4., 9., -20., 2., 15., -10., 12., 8., + -6., -8., -8., -1., 8., 10., 5., -2., + -8., -8., 3., -3., -6., 1., 2., 0., + -4., 4., -1., 5., 4., -5., 2., -1., + 2., -2., 5., 1., 1., -2., 0., -7., + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 2000 */ + -29619.4,-1728.2, 5186.1,-2267.7, 3068.4,-2481.6, 1670.9, + -458.0, 1339.6,-2288.0, -227.6, 1252.1, 293.4, 714.5, + -491.1, 932.3, 786.8, 272.6, 250.0, -231.9, -403.0, + 119.8, 111.3, -303.8, -218.8, 351.4, 43.8, 222.3, + 171.9, -130.4, -133.1, -168.6, -39.3, -12.9, 106.3, + 72.3, 68.2, -17.4, 74.2, 63.7, -160.9, 65.1, + -5.9, -61.2, 16.9, 0.7, -90.4, 43.8, 79.0, + -74.0, -64.6, 0.0, -24.2, 33.3, 6.2, 9.1, + 24.0, 6.9, 14.8, 7.3, -25.4, -1.2, -5.8, + 24.4, 6.6, 11.9, -9.2, -21.5, -7.9, 8.5, + -16.6, -21.5, 9.1, 15.5, 7.0, 8.9, -7.9, + -14.9, -7.0, -2.1, 5.0, 9.4, -19.7, 3.0, + 13.4, -8.4, 12.5, 6.3, -6.2, -8.9, -8.4, + -1.5, 8.4, 9.3, 3.8, -4.3, -8.2, -8.2, + 4.8, -2.6, -6.0, 1.7, 1.7, 0.0, -3.1, + 4.0, -0.5, 4.9, 3.7, -5.9, 1.0, -1.2, + 2.0, -2.9, 4.2, 0.2, 0.3, -2.2, -1.1, + -7.4, 2.7, -1.7, 0.1, -1.9, 1.3, 1.5, + -0.9, -0.1, -2.6, 0.1, 0.9, -0.7, -0.7, + 0.7, -2.8, 1.7, -0.9, 0.1, -1.2, 1.2, + -1.9, 4.0, -0.9, -2.2, -0.3, -0.4, 0.2, + 0.3, 0.9, 2.5, -0.2, -2.6, 0.9, 0.7, + -0.5, 0.3, 0.3, 0.0, -0.3, 0.0, -0.4, + 0.3, -0.1, -0.9, -0.2, -0.4, -0.4, 0.8, + -0.2, -0.9, -0.9, 0.3, 0.2, 0.1, 1.8, + -0.4, -0.4, 1.3, -1.0, -0.4, -0.1, 0.7, + 0.7, -0.4, 0.3, 0.3, 0.6, -0.1, 0.3, + 0.4, -0.2, 0.0, -0.5, 0.1, -0.9, + /* 2002 */ + 13.3, 11.6, -21.2, -14.4, -3.7, -22.7, -3.6, -11.1, + -1.1, -3.5, 5.6, -1.2, -4.5, -8.5, -8.0, -2.7, + 2.2, 1.7, -8.0, 1.0, 4.5, 5.1, -1.9, -0.3, + -1.4, 0.7, -0.3, -2.6, 1.5, -1.2, 2.0, 0.0, + 3.8, -0.2, -0.5, 0.4, 0.3, -0.7, 0.7, -1.8, + 1.9, -0.2, -1.7, -0.4, -0.5, -0.2, 0.7, 1.5, + 0.2, -0.1, 0.7, -0.3, 0.3, 1.1, 0.1, 0.7, + 0.3, 0.5, -0.8, -0.3, -0.1, 0.5, 0.2, 0.1, + 0.2, -0.2, -0.5, 0.1, 0.2, 0.3, -0.4, 0.4, + 0.2, 0.1, 0.5, -0.3, -0.7, 0.4, 0.4, 0.4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; -- 2.30.2